package com.guldan.jaina.provider;

import java.util.List;

import com.guldan.core.dubbo.client.ResponseDTO;
import com.guldan.core.search.Pagination;
import com.guldan.jaina.dto.citizenbatchupdate.CitizenBatchUpdateDTO;
import com.guldan.jaina.dto.citizenbatchupdate.CitizenBatchUpdateSearchDTO;
import com.guldan.jaina.dto.citizenfail.CitizenFailDTO;
import com.guldan.jaina.dto.citizenfail.CitizenFailSearchDTO;
import com.guldan.jaina.dto.citizeninfo.CitizenInfoDTO;
import com.guldan.jaina.dto.citizeninfo.CitizenInfoSearchDTO;
import com.guldan.jaina.dto.citizeninfo.CitizenUploadResultDTO;
import com.guldan.jaina.dto.progress.BarDTO;

/**
 * Created by Silas.
 * Date: 2016/11/7
 * Time: 22:49
 */
public interface ICitizenInfoProvider {

    //获取单个居民信息，传入：citizenInfoId
    ResponseDTO<CitizenInfoDTO> get(Integer citizenInfoId);

    //新增/更新单个居民信息，传入：CitizenInfoDTO
    ResponseDTO<CitizenInfoDTO> save(CitizenInfoDTO citizenInfoDTO);

    //删除单个居民信息，传入：citizenInfoId
    ResponseDTO<Boolean> delete(Integer citizenInfoId);

    //分页获取居民信息信息列表，传入：检索DTO
    ResponseDTO<Pagination<CitizenInfoDTO>> list(CitizenInfoSearchDTO citizenInfoSearchDTO);

    ResponseDTO<List<CitizenInfoDTO>> getCitizenInfoList(CitizenInfoSearchDTO citizenInfoSearchDTO);

    //批量导入人员信息（上传execl方式）
    ResponseDTO<Boolean> uploadCitizen();

    //获取上传批次id，和时间
    ResponseDTO<List<CitizenFailDTO>> uploadBatchList();

    //获取导入失败人员列表
    ResponseDTO<CitizenFailDTO> getFail(Integer id);

    //获取导入失败人员列表
    ResponseDTO<Pagination<CitizenFailDTO>> failList(CitizenFailSearchDTO searchDTO);

    //redis key
    ResponseDTO<String> failListForDownload(CitizenFailSearchDTO searchDTO);


    //上传人员列表
    ResponseDTO<BarDTO> uploadCitizen(List<CitizenInfoDTO> list);

    //批量更新银行卡，上传更新卡号模版
    ResponseDTO<BarDTO> uploadBank(List<CitizenBatchUpdateDTO> list);

    //批量更新银行卡，上传批次列表
    ResponseDTO<List<CitizenBatchUpdateDTO>> uploadBatchList(CitizenBatchUpdateSearchDTO searchDTO);

    //批量更新银行卡，查看失败记录列表
    ResponseDTO<Pagination<CitizenBatchUpdateDTO>> uploadFailList(CitizenBatchUpdateSearchDTO searchDTO);

    //批量更新银行卡，下载批失败列表
    ResponseDTO<List<CitizenBatchUpdateDTO>> downFailList(CitizenBatchUpdateSearchDTO searchDTO);

    //批量更新姓名，上传更新姓名模版
    ResponseDTO<BarDTO> uploadName(List<CitizenBatchUpdateDTO> list);

    //批量更新区划。上传更新区划模版
    ResponseDTO<BarDTO> uploadArea(List<CitizenBatchUpdateDTO> list);

    //导出人员信息，传入：检索DTO
    ResponseDTO<String> downCitizenList(CitizenInfoSearchDTO citizenInfoSearchDTO);


}
